package com.tjetc;


class Base {
    int count = 10;

    public void display() {
        System.out.println(this.count);
    }
}

class Sub extends Base {
    int count = 20;

    public void display() {
        System.out.println(this.count);
    }
}


public class _18PolymorphicExercise {
    public static void main(String[] args) {
        Sub sub = new Sub();
        System.out.println(sub.count);  // 20
        sub.display(); // 20

        Base base = sub; // 向上转型
        // == 如果是对象 比对的是对象地址的值 hashcode
        // 如果是基本数据类型 比对的值的大小
        System.out.println(sub == base); // true 不管是向上转型还是向下转型 都不会改变原有对象中的内容
        System.out.println(base.count); //  10 属性没有重写 只看编译类型
        base.display(); // 20 方法 有运行时类型
    }

    public static void main1(String[] args) {
        // 判断下列哪些语句是正确的
        double d = 13.4;
        long l = (long) d;    // ✓
        System.out.println(l); // 13
        int in = 5;
//        boolean b = (boolean) in; // × boolean不能转换成基本数据类型
        Object obj = "Hello";    // ✓ 发生了向上转型
        String objstr = (String) obj; // ✓ 向下转型
        System.out.println(objstr);  // Hello
    }
}



